﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using Modelo;

namespace AccesoDatos
{
    public static class BDMenuDiario
    {
        public static string connect="Data Source=.\\sqlexpress; Initial Catalog=BitFood; Integrated Security=true";

       
        public static int getIdMenudiario(DateTime fecha, string tipo)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            SqlDataReader reader = null;
            int id = -1;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "SELECT * FROM Comida,MenuDiario,Receta WHERE Comida.IdComida=MenuDiario.IdComida and Comida.IdReceta = Receta.Nombre and MenuDiario.Fecha = @fecha and Comida.Tipo = @tipo";
                comando.Parameters.AddWithValue("fecha",fecha);
                comando.Parameters.AddWithValue("tipo",tipo);
                SQL_conn.Open();
                reader = comando.ExecuteReader();
                if (reader.Read())
                {
                    id = Convert.ToInt32(reader["IdMenuDiario"]);
                }
            }
            catch (SqlException)
            {
                return -1;
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                    if (reader != null)
                        reader.Dispose();

                }
            }
            return id;
            
        
        
        }
        
        public static int VerificarMenuDiario(DateTime fecha, string tipo)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            SqlDataReader reader = null;
            int id = -1;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "SELECT IdMenuDiario,Comida.IdComida FROM Comida,MenuDiario Where Comida.IdComida=MenuDiario.IdComida And Fecha=@fecha And Tipo=@tipo";
                comando.Parameters.AddWithValue("fecha", fecha);
                comando.Parameters.AddWithValue("tipo", tipo);
                SQL_conn.Open();
                reader = comando.ExecuteReader();
                    if (reader.Read())
                    {
                        int idComida = Convert.ToInt32(reader["IdComida"]);
                        id = Convert.ToInt32(reader["IdMenuDiario"]);
                        string nombreComida = BDComida.getNombreComida(idComida);
                        if (nombreComida != null)
                            BDReceta.SetCantidadUsadas(nombreComida, -1);
                    
                        BDComida.EliminarComida(idComida);
                    }
                
            }
            catch (SqlException)
            {
                return -1;
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                    if (reader != null)
                        reader.Dispose();

                }
            }
            return id;

        }
        public static bool InsertarMenuDiario(DateTime fecha, int id)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "INSERT INTO [MenuDiario](IdComida,Fecha) VALUES (@id,@fecha)";
                comando.Parameters.AddWithValue("id", id);
                comando.Parameters.AddWithValue("fecha", fecha);
                SQL_conn.Open();
                comando.ExecuteNonQuery();
            }
            catch (SqlException)
            {
                return false;
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                }
            }
            return true;
        }
        public static void ActualizarMenuDiario(int id, int comida)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "UPDATE [MenuDiario] Set IdComida=@comida where IdMenuDiario=@id";
                comando.Parameters.AddWithValue("id", id);
                comando.Parameters.AddWithValue("comida", comida);
                SQL_conn.Open();
                comando.ExecuteNonQuery();
            }
            catch (SqlException)
            {
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                }
            }

        }
        public static void AnadirComidaMenuDiario(DateTime fecha, string tipo, string nombre, int adultos, int ninios)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "INSERT INTO [Comida](CantidadAdultos,CantidadNiños,IdReceta,Tipo) VALUES (@adultos,@ninos,@nombre,@tipo)";
                comando.Parameters.AddWithValue("adultos", adultos);
                comando.Parameters.AddWithValue("ninos", ninios);
                comando.Parameters.AddWithValue("nombre", nombre);
                comando.Parameters.AddWithValue("tipo", tipo);

                SQL_conn.Open();
                comando.ExecuteNonQuery();
                
            }
            catch (Exception)
            {
                          
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                }
            }
            
        }
        
        
        public static Comida GetComidas(DateTime Fecha, string Tipo)
        {
            SqlConnection SQL_conn = null;
            SqlCommand comando = null;
            SqlDataReader reader = null;
            Comida comida = null;
            try
            {
                SQL_conn = new SqlConnection(connect);
                comando = SQL_conn.CreateCommand();
                comando.CommandText = "SELECT * FROM Comida,MenuDiario,Receta WHERE Comida.IdComida=MenuDiario.IdComida and Comida.IdReceta = Receta.Nombre and MenuDiario.Fecha = @fecha and Comida.Tipo = @tipo";
                comando.Parameters.AddWithValue("fecha", Fecha);
                comando.Parameters.AddWithValue("tipo", Tipo);


                SQL_conn.Open();
                reader = comando.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();
                    comida = new Comida();
                    comida.CantidadAdultos = Convert.ToInt32(reader["CantidadAdultos"].ToString());
                    comida.CantidadNiños = Convert.ToInt32(reader["CantidadNiños"].ToString());
                    comida.recetas.Comensales = float.Parse(reader["Comensales"].ToString());
                    comida.recetas.Dificultad = Convert.ToInt32(reader["Dificultad"].ToString());
                    comida.recetas.Nombre = reader["IdReceta"].ToString();
                    comida.recetas.Procedimiento = reader["Procedimiento"].ToString();
                    comida.recetas.Tiempo = float.Parse(reader["Tiempo"].ToString());
                    comida.recetas.Usadas = Convert.ToInt32(reader["Usadas"].ToString());
                    comida.recetas.Ingredientes = BDIngrediente.GetIngredientes(comida.recetas.Nombre);
                    return comida;
                }
                return null;
            }
            catch (Exception )
            {
                return null;
            }
            finally
            {
                if (SQL_conn != null)
                {
                    SQL_conn.Dispose();
                    if (reader != null)
                        reader.Dispose();
                }
            }
        }
    }
}
